const https = require('https');
const fs = require('fs')
const path = require('path')

function isFileExisted(path) {
	return new Promise(function (resolve, reject) {
		fs.access(path, (err) => {
			if (err) {
				reject(err.message);
			} else {
				resolve('existed');
			}
		})
	})
}

// function fetchJSON(options) {
// 	let {
// 		url,
// 		myPath,
// 		backupPath,
// 		msg,
// 		res
// 	} = options
// 	let responseString = '';
// 	https.get(url, (result) => {
// 		result.setEncoding('utf-8');

// 		result.on('data', function (data) {
// 			responseString += data;
// 		});

// 		result.on('end', async function () {
// 			let data;
// 			try {
// 				data = JSON.parse(responseString);
// 				console.log('get', url);

// 				// 缓存文件
// 				fs.writeFileSync(myPath, JSON.stringify(data))

// 			} catch {
// 				console.log('error', url);
// 				try {
// 					await isFileExisted(myPath);
// 					console.log('use', 'myPath');
// 				} catch (error) {
// 					myPath = backupPath;
// 					console.log('use', 'backupPath');
// 				}
// 				data = JSON.parse(fs.readFileSync(myPath, 'utf8'));
// 			}
// 			res.json({
// 				code: 200,
// 				msg,
// 				data
// 			})
// 		});
// 	}).on('error', (e) => {
// 		console.error(e);
// 	});
// }
async function fetchJSON(options) {
	let {
		url,
		myPath,
		backupPath,
		msg,
		res
	} = options
	let responseString = '';
	let data;

	try {
		await isFileExisted(myPath);
		console.log('use', 'myPath');
		data = JSON.parse(fs.readFileSync(myPath, 'utf8'));
	} catch {
		https.get(url, (result) => {
			result.setEncoding('utf-8');
			result.on('data', function (data) {
				responseString += data;
			})
			result.on('end', async function () {
				try {
					data = JSON.parse(responseString);
					console.log('get', url);
					// 缓存文件
					fs.writeFileSync(myPath, JSON.stringify(data))
				} catch {
					console.log('error', url);
					console.log('use', 'backupPath');
					data = JSON.parse(fs.readFileSync(backupPath, 'utf8'));
				}
			})
		})
	}

	res.json({
		code: 200,
		msg,
		data
	})
}


module.exports = { isFileExisted, fetchJSON }